/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 * UNIVERSIDAD DEL VALLE DE GUATEMALA
 * ALGORITMOS Y ESTRUCTURAS DE DATOS - SECCION 20
 * RADIO DE CARRO (ESTE ES EL MAIN Y LA GUI DEL PROGRAMA)
 * @author Javier Ivan Castillo Rivera, 11010
 * @author Jose Guillermo Gonzalez Mclaughlin, 11289
 * @author Derek Warren Orbaugh Antillon, 09180
 */
// Importacion de bibliotecas necesarias para poder utilizar interfaz grafica.
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.text.DecimalFormat;

public class RadioGUIPanel extends javax.swing.JFrame {

    /**
     * Se inicializa una variable de tipo Radio5 para implementar los metodos
     * de esa clase.
     */
    public RadioGUIPanel() {
        initComponents();
        MyRadio = new Radio5();
    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
    private void initComponents() {

        jScrollPane1 = new javax.swing.JScrollPane();
        jTextPane1 = new javax.swing.JTextPane();
        TituloLabel = new javax.swing.JLabel();
        BandaLabel = new javax.swing.JLabel();
        AMorFMText = new javax.swing.JTextField();
        FrecuenciaLabel = new javax.swing.JLabel();
        FrecuenciaText = new javax.swing.JTextField();
        CambiarEstacion = new javax.swing.JButton();
        Memoria1 = new javax.swing.JButton();
        Memoria2 = new javax.swing.JButton();
        Memoria3 = new javax.swing.JButton();
        Memoria4 = new javax.swing.JButton();
        Memoria5 = new javax.swing.JButton();
        Memoria6 = new javax.swing.JButton();
        Memoria7 = new javax.swing.JButton();
        Memoria8 = new javax.swing.JButton();
        Memoria9 = new javax.swing.JButton();
        Memoria10 = new javax.swing.JButton();
        Memoria11 = new javax.swing.JButton();
        Memoria12 = new javax.swing.JButton();
        MemoriaLabel = new javax.swing.JLabel();
        GuardarEstacion = new javax.swing.JButton();
        CambiarBanda = new javax.swing.JButton();
        OnOffRadio = new javax.swing.JToggleButton();

        jScrollPane1.setViewportView(jTextPane1);

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        TituloLabel.setFont(new java.awt.Font("Arial", 1, 14)); // NOI18N
        TituloLabel.setForeground(new java.awt.Color(0, 0, 255));
        TituloLabel.setText("RADIO DE CARRO, GRUPO 5");

        BandaLabel.setText("BANDA:");

        AMorFMText.setText("FM");

        FrecuenciaLabel.setText("FRECUENCIA:");

        FrecuenciaText.setText("87.9");

        CambiarEstacion.setText("CAMBIAR ESTACION");
        CambiarEstacion.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                CambiarEstacionActionPerformed(evt);
            }
        });

        Memoria1.setText("01");
        Memoria1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                Memoria1ActionPerformed(evt);
            }
        });

        Memoria2.setText("02");
        Memoria2.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                Memoria2ActionPerformed(evt);
            }
        });

        Memoria3.setText("03");
        Memoria3.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                Memoria3ActionPerformed(evt);
            }
        });

        Memoria4.setText("04");
        Memoria4.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                Memoria4ActionPerformed(evt);
            }
        });

        Memoria5.setText("05");
        Memoria5.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                Memoria5ActionPerformed(evt);
            }
        });

        Memoria6.setText("06");
        Memoria6.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                Memoria6ActionPerformed(evt);
            }
        });

        Memoria7.setText("07");
        Memoria7.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                Memoria7ActionPerformed(evt);
            }
        });

        Memoria8.setText("08");
        Memoria8.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                Memoria8ActionPerformed(evt);
            }
        });

        Memoria9.setText("09");
        Memoria9.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                Memoria9ActionPerformed(evt);
            }
        });

        Memoria10.setText("10");
        Memoria10.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                Memoria10ActionPerformed(evt);
            }
        });

        Memoria11.setText("11");
        Memoria11.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                Memoria11ActionPerformed(evt);
            }
        });

        Memoria12.setText("12");
        Memoria12.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                Memoria12ActionPerformed(evt);
            }
        });

        MemoriaLabel.setFont(new java.awt.Font("Arial", 1, 12)); // NOI18N
        MemoriaLabel.setText("ESTACIONES GUARDADAS");

        GuardarEstacion.setText("GUARDAR ESTACION");
        GuardarEstacion.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                GuardarEstacionActionPerformed(evt);
            }
        });

        CambiarBanda.setText("CAMBIAR BANDA");
        CambiarBanda.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                CambiarBandaActionPerformed(evt);
            }
        });

        OnOffRadio.setIcon(new javax.swing.ImageIcon(getClass().getResource("/OffGris.png"))); // NOI18N
        OnOffRadio.setSelectedIcon(new javax.swing.ImageIcon(getClass().getResource("/OnFucsia.png"))); // NOI18N
        OnOffRadio.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                OnOffRadioActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addGap(34, 34, 34)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                            .addGroup(layout.createSequentialGroup()
                                .addGap(114, 114, 114)
                                .addComponent(MemoriaLabel))
                            .addGroup(layout.createSequentialGroup()
                                .addGap(151, 151, 151)
                                .addComponent(TituloLabel))
                            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                    .addGroup(layout.createSequentialGroup()
                                        .addComponent(FrecuenciaLabel)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                        .addComponent(FrecuenciaText, javax.swing.GroupLayout.PREFERRED_SIZE, 90, javax.swing.GroupLayout.PREFERRED_SIZE))
                                    .addGroup(layout.createSequentialGroup()
                                        .addComponent(BandaLabel)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                        .addComponent(AMorFMText, javax.swing.GroupLayout.PREFERRED_SIZE, 29, javax.swing.GroupLayout.PREFERRED_SIZE)))
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                    .addComponent(CambiarBanda)
                                    .addComponent(CambiarEstacion)))))
                    .addGroup(layout.createSequentialGroup()
                        .addGap(48, 48, 48)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addGroup(layout.createSequentialGroup()
                                .addComponent(Memoria7)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                .addComponent(Memoria8)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                .addComponent(Memoria9)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                .addComponent(Memoria10)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                .addComponent(Memoria11)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                .addComponent(Memoria12))
                            .addGroup(layout.createSequentialGroup()
                                .addComponent(Memoria1)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                .addComponent(Memoria2)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                .addComponent(Memoria3)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                .addComponent(Memoria4)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                .addComponent(Memoria5)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                .addComponent(Memoria6)))))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 50, Short.MAX_VALUE)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(GuardarEstacion)
                    .addComponent(OnOffRadio))
                .addContainerGap(53, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(TituloLabel)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(BandaLabel)
                            .addComponent(AMorFMText, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(CambiarBanda))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(FrecuenciaLabel)
                            .addComponent(FrecuenciaText, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(CambiarEstacion)))
                    .addComponent(OnOffRadio))
                .addGap(58, 58, 58)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(MemoriaLabel)
                    .addComponent(GuardarEstacion))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(Memoria1)
                    .addComponent(Memoria2)
                    .addComponent(Memoria3)
                    .addComponent(Memoria4)
                    .addComponent(Memoria5)
                    .addComponent(Memoria6))
                .addGap(18, 18, 18)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(Memoria7)
                    .addComponent(Memoria8)
                    .addComponent(Memoria9)
                    .addComponent(Memoria10)
                    .addComponent(Memoria11)
                    .addComponent(Memoria12))
                .addContainerGap(198, Short.MAX_VALUE))
        );

        BandaLabel.setEnabled(false);
        AMorFMText.setEnabled(false);
        FrecuenciaLabel.setEnabled(false);
        FrecuenciaText.setEnabled(false);
        CambiarEstacion.setEnabled(false);
        Memoria1.setEnabled(false);
        Memoria2.setEnabled(false);
        Memoria3.setEnabled(false);
        Memoria4.setEnabled(false);
        Memoria5.setEnabled(false);
        Memoria6.setEnabled(false);
        Memoria7.setEnabled(false);
        Memoria8.setEnabled(false);
        Memoria9.setEnabled(false);
        Memoria10.setEnabled(false);
        Memoria11.setEnabled(false);
        Memoria12.setEnabled(false);
        MemoriaLabel.setEnabled(false);
        GuardarEstacion.setEnabled(false);
        CambiarBanda.setEnabled(false);

        pack();
    }// </editor-fold>                        
    
    //Metodo utilizado cuando se presiona el boton 5 de memoria del radio.
    private void Memoria5ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        // Condicion para guardar la estacion en lugar de seleccionarla
        if(Guardando)
        {
            //Se llama al metodo de Radio 5 para guardar una estacion.
            MyRadio.guardarEstacion(5);
            // Condicion para no seguir guardando despues de haberse terminado este proceso.
            Guardando = false;
            // Se vuelven visibles todos los demas botones, ya que estaban inactivos para poder guardar estaciones.
            OnOffRadio.setEnabled(true);
            BandaLabel.setEnabled(true);
            AMorFMText.setEnabled(true);
            CambiarBanda.setEnabled(true);
            FrecuenciaLabel.setEnabled(true);
            FrecuenciaText.setEnabled(true);
            CambiarEstacion.setEnabled(true);
            GuardarEstacion.setEnabled(true);
        }
        // Esto se lleva a cabo si se va a seleccionar una estacion guardada en memoria.
        else
        {
            // se hace referencia al metodo para seleccionar la estacion en memoria.
            MyRadio.seleccionarEstacion(5);
            // Se modifica el Text donde se muestra la estacion o frecuencia actual.
            FrecuenciaText.setText("" + df.format(MyRadio.getFrecuencia()));
        }
    }                                        
    
    // Metodo para cambiar de AM a FM a AM.
    private void CambiarBandaActionPerformed(java.awt.event.ActionEvent evt) {                                             
        // Se hace referencia al metodo en Radio5 para cambiar de AM a FM o viceversa.
        MyRadio.cambiarBanda();
        // Condiciones para verificar en que banda se encuentra el radio actualmente.
        if(MyRadio.isAM())
        {
            // Se modifica el Test a AM ya que ese es su banda actual. 
            AMorFMText.setText("AM");
            // Se cambia la frecuencia por default a 530 ya que se acaba de cambiar la banda.
            FrecuenciaText.setText("530");
        }
        else
        {
            AMorFMText.setText("FM");
            FrecuenciaText.setText("87.9");
        }
            
    }                                            
    
    // Metodo para cambiar de estacion. Se modifica la frecuencia desplegada al usuario con un setTExt.
    private void CambiarEstacionActionPerformed(java.awt.event.ActionEvent evt) {                                                
        MyRadio.cambiarFrecuencia();
        FrecuenciaText.setText("" + df.format(MyRadio.getFrecuencia()));
    }                                               

    /* Metodo para guardar en memoria una estacion. Aqui se deshabilitan todos los botones
     * exceptuando los botones de memoria (1 al 12). Cuando el usuario presiona uno de los 
     * botones se realiza el metodo correspondiente de cada boton.
    */
    private void GuardarEstacionActionPerformed(java.awt.event.ActionEvent evt) {                                                
        OnOffRadio.setEnabled(false);
        BandaLabel.setEnabled(false);
        AMorFMText.setEnabled(false);
        CambiarBanda.setEnabled(false);
        FrecuenciaLabel.setEnabled(false);
        FrecuenciaText.setEnabled(false);
        CambiarEstacion.setEnabled(false);
        GuardarEstacion.setEnabled(false);
        MemoriaLabel.setEnabled(true);
        Memoria1.setEnabled(true);
        Memoria2.setEnabled(true);
        Memoria3.setEnabled(true);
        Memoria4.setEnabled(true);
        Memoria5.setEnabled(true);
        Memoria6.setEnabled(true);
        Memoria7.setEnabled(true);
        Memoria8.setEnabled(true);
        Memoria9.setEnabled(true);
        Memoria10.setEnabled(true);
        Memoria11.setEnabled(true);
        Memoria12.setEnabled(true);
        /* Condicion para que al utilizar el metodo de cada boton de memoria
         * se realiza el de guardar en memoria no la de seleccionar de memoria.
         */
        Guardando = true;        
    }                                               

    /*Metodo utilizado cuando se presiona el boton 1 de memoria del radio.
    * ESTE METODO ES IGUAL PARA LOS 12 BOTONES DE MEMORIA, LO UNICO QUE CAMBIA
    * ES EL BOTON QUE SE MANDA COMO PARAMETRO A RADIO5.
    */
    private void Memoria1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        // Condicion para guardar la estacion en lugar de seleccionarla
        if(Guardando)
        {
            //Se llama al metodo de Radio5 para guardar una estacion.
            MyRadio.guardarEstacion(1);
            // Condicion para no seguir guardando despues de haberse terminado este proceso.
            Guardando = false;
            // Se vuelven visibles todos los demas botones, ya que estaban inactivos para poder guardar estaciones.
            OnOffRadio.setEnabled(true);
            BandaLabel.setEnabled(true);
            AMorFMText.setEnabled(true);
            CambiarBanda.setEnabled(true);
            FrecuenciaLabel.setEnabled(true);
            FrecuenciaText.setEnabled(true);
            CambiarEstacion.setEnabled(true);
            GuardarEstacion.setEnabled(true);
        }
        // Esto se lleva a cabo si se va a seleccionar una estacion guardada en memoria.
        else
        {
            // se hace referencia al metodo para seleccionar la estacion en memoria.
            MyRadio.seleccionarEstacion(1);
            // Se modifica el Text donde se muestra la estacion o frecuencia actual.
            // Se utiliza Decimal Format para que el número mostrado tenga los decimales requeridos.
            FrecuenciaText.setText("" + df.format(MyRadio.getFrecuencia()));
        }
    }                                        
    // Se realiza lo mismo que en Memoria1ActionPerformed. El unico cambio es el parametro
    // que se manda al usar MyRadio.guardarEstacion(int boton). De alli todo es igual.
    private void Memoria2ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        if(Guardando)
        {
            MyRadio.guardarEstacion(2);
            Guardando = false;
            OnOffRadio.setEnabled(true);
            BandaLabel.setEnabled(true);
            AMorFMText.setEnabled(true);
            CambiarBanda.setEnabled(true);
            FrecuenciaLabel.setEnabled(true);
            FrecuenciaText.setEnabled(true);
            CambiarEstacion.setEnabled(true);
            GuardarEstacion.setEnabled(true);
        }
        else
        {
            MyRadio.seleccionarEstacion(2);
            FrecuenciaText.setText("" + df.format(MyRadio.getFrecuencia()));
        }
    }                                        
    // Se realiza lo mismo que en Memoria1ActionPerformed. El unico cambio es el parametro
    // que se manda al usar MyRadio.guardarEstacion(int boton). De alli todo es igual.
    private void Memoria3ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        if(Guardando)
        {
            MyRadio.guardarEstacion(3);
            Guardando = false;
            OnOffRadio.setEnabled(true);
            BandaLabel.setEnabled(true);
            AMorFMText.setEnabled(true);
            CambiarBanda.setEnabled(true);
            FrecuenciaLabel.setEnabled(true);
            FrecuenciaText.setEnabled(true);
            CambiarEstacion.setEnabled(true);
            GuardarEstacion.setEnabled(true);
        }
        else
        {
            MyRadio.seleccionarEstacion(3);
            FrecuenciaText.setText("" + df.format(MyRadio.getFrecuencia()));
        }
    }                                        
    // Se realiza lo mismo que en Memoria1ActionPerformed. El unico cambio es el parametro
    // que se manda al usar MyRadio.guardarEstacion(int boton). De alli todo es igual.
    private void Memoria4ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        if(Guardando)
        {
            MyRadio.guardarEstacion(4);
            Guardando = false;
            OnOffRadio.setEnabled(true);
            BandaLabel.setEnabled(true);
            AMorFMText.setEnabled(true);
            CambiarBanda.setEnabled(true);
            FrecuenciaLabel.setEnabled(true);
            FrecuenciaText.setEnabled(true);
            CambiarEstacion.setEnabled(true);
            GuardarEstacion.setEnabled(true);
        }
        else
        {
            MyRadio.seleccionarEstacion(4);
            FrecuenciaText.setText("" + df.format(MyRadio.getFrecuencia()));
        }
    }                                        
    // Se realiza lo mismo que en Memoria1ActionPerformed. El unico cambio es el parametro
    // que se manda al usar MyRadio.guardarEstacion(int boton). De alli todo es igual.
    private void Memoria6ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        if(Guardando)
        {
            MyRadio.guardarEstacion(6);
            Guardando = false;
            OnOffRadio.setEnabled(true);
            BandaLabel.setEnabled(true);
            AMorFMText.setEnabled(true);
            CambiarBanda.setEnabled(true);
            FrecuenciaLabel.setEnabled(true);
            FrecuenciaText.setEnabled(true);
            CambiarEstacion.setEnabled(true);
            GuardarEstacion.setEnabled(true);
        }
        else
        {
            MyRadio.seleccionarEstacion(6);
            FrecuenciaText.setText("" + df.format(MyRadio.getFrecuencia()));
        }
    }                                        
    // Se realiza lo mismo que en Memoria1ActionPerformed. El unico cambio es el parametro
    // que se manda al usar MyRadio.guardarEstacion(int boton). De alli todo es igual.
    private void Memoria7ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        if(Guardando)
        {
            MyRadio.guardarEstacion(7);
            Guardando = false;
            OnOffRadio.setEnabled(true);
            BandaLabel.setEnabled(true);
            AMorFMText.setEnabled(true);
            CambiarBanda.setEnabled(true);
            FrecuenciaLabel.setEnabled(true);
            FrecuenciaText.setEnabled(true);
            CambiarEstacion.setEnabled(true);
            GuardarEstacion.setEnabled(true);
        }
        else
        {
            MyRadio.seleccionarEstacion(7);
            FrecuenciaText.setText("" + df.format(MyRadio.getFrecuencia()));
        }
    }                                        
    // Se realiza lo mismo que en Memoria1ActionPerformed. El unico cambio es el parametro
    // que se manda al usar MyRadio.guardarEstacion(int boton). De alli todo es igual.
    private void Memoria8ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        if(Guardando)
        {
            MyRadio.guardarEstacion(8);
            Guardando = false;
            OnOffRadio.setEnabled(true);
            BandaLabel.setEnabled(true);
            AMorFMText.setEnabled(true);
            CambiarBanda.setEnabled(true);
            FrecuenciaLabel.setEnabled(true);
            FrecuenciaText.setEnabled(true);
            CambiarEstacion.setEnabled(true);
            GuardarEstacion.setEnabled(true);
        }
        else
        {
            MyRadio.seleccionarEstacion(8);
            FrecuenciaText.setText("" + df.format(MyRadio.getFrecuencia()));
        }
    }                                        
    // Se realiza lo mismo que en Memoria1ActionPerformed. El unico cambio es el parametro
    // que se manda al usar MyRadio.guardarEstacion(int boton). De alli todo es igual.
    private void Memoria9ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        if(Guardando)
        {
            MyRadio.guardarEstacion(9);
            Guardando = false;
            OnOffRadio.setEnabled(true);
            BandaLabel.setEnabled(true);
            AMorFMText.setEnabled(true);
            CambiarBanda.setEnabled(true);
            FrecuenciaLabel.setEnabled(true);
            FrecuenciaText.setEnabled(true);
            CambiarEstacion.setEnabled(true);
            GuardarEstacion.setEnabled(true);
        }
        else
        {
            MyRadio.seleccionarEstacion(9);
            FrecuenciaText.setText("" + df.format(MyRadio.getFrecuencia()));
        }
    }                                        
    // Se realiza lo mismo que en Memoria1ActionPerformed. El unico cambio es el parametro
    // que se manda al usar MyRadio.guardarEstacion(int boton). De alli todo es igual.
    private void Memoria10ActionPerformed(java.awt.event.ActionEvent evt) {                                          
        if(Guardando)
        {
            MyRadio.guardarEstacion(10);
            Guardando = false;
            OnOffRadio.setEnabled(true);
            BandaLabel.setEnabled(true);
            AMorFMText.setEnabled(true);
            CambiarBanda.setEnabled(true);
            FrecuenciaLabel.setEnabled(true);
            FrecuenciaText.setEnabled(true);
            CambiarEstacion.setEnabled(true);
            GuardarEstacion.setEnabled(true);
        }
        else
        {
            MyRadio.seleccionarEstacion(10);
            FrecuenciaText.setText("" + df.format(MyRadio.getFrecuencia()));
        }
    }                                         
    // Se realiza lo mismo que en Memoria1ActionPerformed. El unico cambio es el parametro
    // que se manda al usar MyRadio.guardarEstacion(int boton). De alli todo es igual.
    private void Memoria11ActionPerformed(java.awt.event.ActionEvent evt) {                                          
        if(Guardando)
        {
            MyRadio.guardarEstacion(11);
            Guardando = false;
            OnOffRadio.setEnabled(true);
            BandaLabel.setEnabled(true);
            AMorFMText.setEnabled(true);
            CambiarBanda.setEnabled(true);
            FrecuenciaLabel.setEnabled(true);
            FrecuenciaText.setEnabled(true);
            CambiarEstacion.setEnabled(true);
            GuardarEstacion.setEnabled(true);
        }
        else
        {
            MyRadio.seleccionarEstacion(11);
            FrecuenciaText.setText("" + df.format(MyRadio.getFrecuencia()));
        }
    }                                         
    // Se realiza lo mismo que en Memoria1ActionPerformed. El unico cambio es el parametro
    // que se manda al usar MyRadio.guardarEstacion(int boton). De alli todo es igual.
    private void Memoria12ActionPerformed(java.awt.event.ActionEvent evt) {                                          
        if(Guardando)
        {
            MyRadio.guardarEstacion(12);
            Guardando = false;
            OnOffRadio.setEnabled(true);
            BandaLabel.setEnabled(true);
            AMorFMText.setEnabled(true);
            CambiarBanda.setEnabled(true);
            FrecuenciaLabel.setEnabled(true);
            FrecuenciaText.setEnabled(true);
            CambiarEstacion.setEnabled(true);
            GuardarEstacion.setEnabled(true);
        }
        else
        {
            MyRadio.seleccionarEstacion(12);
            FrecuenciaText.setText("" + df.format(MyRadio.getFrecuencia()));
        }
    }                                         

    private void OnOffRadioActionPerformed(java.awt.event.ActionEvent evt) {                                           
        // Se hace referencia al metodo para encender y apagar el radio.
        MyRadio.onOff();
        // SI el radio esta encendido se habilitan los demas botones, si no entonces se deshabilitan.
        if(MyRadio.isOn())
        {
            BandaLabel.setEnabled(true);
            AMorFMText.setEnabled(true);
            CambiarBanda.setEnabled(true);
            FrecuenciaLabel.setEnabled(true);
            FrecuenciaText.setEnabled(true);
            CambiarEstacion.setEnabled(true);
            GuardarEstacion.setEnabled(true);
            MemoriaLabel.setEnabled(true);
            Memoria1.setEnabled(true);
            Memoria2.setEnabled(true);
            Memoria3.setEnabled(true);
            Memoria4.setEnabled(true);
            Memoria5.setEnabled(true);
            Memoria6.setEnabled(true);
            Memoria7.setEnabled(true);
            Memoria8.setEnabled(true);
            Memoria9.setEnabled(true);
            Memoria10.setEnabled(true);
            Memoria11.setEnabled(true);
            Memoria12.setEnabled(true);
            if(MyRadio.isAM())
            {
                FrecuenciaText.setText(""+df.format(MyRadio.getFrecuencia()));
                AMorFMText.setText("AM");
            }
            else
            {
                FrecuenciaText.setText(""+df.format(MyRadio.getFrecuencia()));
                AMorFMText.setText("FM");
            }
            
        }
        else
        {
            BandaLabel.setEnabled(false);
            AMorFMText.setEnabled(false);
            CambiarBanda.setEnabled(false);
            FrecuenciaLabel.setEnabled(false);
            FrecuenciaText.setEnabled(false);
            CambiarEstacion.setEnabled(false);
            GuardarEstacion.setEnabled(false);
            MemoriaLabel.setEnabled(false);
            Memoria1.setEnabled(false);
            Memoria2.setEnabled(false);
            Memoria3.setEnabled(false);
            Memoria4.setEnabled(false);
            Memoria5.setEnabled(false);
            Memoria6.setEnabled(false);
            Memoria7.setEnabled(false);
            Memoria8.setEnabled(false);
            Memoria9.setEnabled(false);
            Memoria10.setEnabled(false);
            Memoria11.setEnabled(false);
            Memoria12.setEnabled(false);
        }
    }                                          

    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        /*
         * Set the Nimbus look and feel
         */
        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
        /*
         * If Nimbus (introduced in Java SE 6) is not available, stay with the
         * default look and feel. For details see
         * http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
         */
        try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (ClassNotFoundException ex) {
            java.util.logging.Logger.getLogger(RadioGUIPanel.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(RadioGUIPanel.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(RadioGUIPanel.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(RadioGUIPanel.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
        //</editor-fold>

        /*
         * Create and display the form
         */
        java.awt.EventQueue.invokeLater(new Runnable() {

            public void run() {
                new RadioGUIPanel().setVisible(true);
            }
        });
    }
    // Variables declaration - do not modify                     
    private javax.swing.JTextField AMorFMText;
    private javax.swing.JLabel BandaLabel;
    private javax.swing.JButton CambiarBanda;
    private javax.swing.JButton CambiarEstacion;
    private javax.swing.JLabel FrecuenciaLabel;
    private javax.swing.JTextField FrecuenciaText;
    private javax.swing.JButton GuardarEstacion;
    private javax.swing.JButton Memoria1;
    private javax.swing.JButton Memoria10;
    private javax.swing.JButton Memoria11;
    private javax.swing.JButton Memoria12;
    private javax.swing.JButton Memoria2;
    private javax.swing.JButton Memoria3;
    private javax.swing.JButton Memoria4;
    private javax.swing.JButton Memoria5;
    private javax.swing.JButton Memoria6;
    private javax.swing.JButton Memoria7;
    private javax.swing.JButton Memoria8;
    private javax.swing.JButton Memoria9;
    private javax.swing.JLabel MemoriaLabel;
    private javax.swing.JToggleButton OnOffRadio;
    private javax.swing.JLabel TituloLabel;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JTextPane jTextPane1;
    // End of variables declaration                   
    private Radio5 MyRadio;
    private boolean Guardando;
    private DecimalFormat df = new DecimalFormat("#.#");
}


